package com.dao;

import com.bean.Express;
import com.exception.CodeException;
import com.exception.NumberException;

import java.util.List;
import java.util.Map;

/**
 * @Author: 柏竹
 * @Description: 快递方法接口
 * @Date_Created_in: 2021-05-20 22:27
 * @Modified_By: Sans
 * @Project: 快递e栈
 */
public interface BaseExpressDao {
    
    /**
     * 查 库 全部快递(总数,新增)，代取件快递(总数,新增)
     * @return [{size:总数,day:新增},{size:总数,day:新增}]
     */
    List<Map<String,Integer>> console();
    
    /**
     * 查 所有 快递信息
     * @param limit 是否分页
     * @param offset 起始索引
     * @param pageNumber 每页查询数
     * @return 快递结果集
     */
    List<Express> findExpressAll(boolean limit, int offset, int pageNumber);
    
    /**
     * 查 指定 快递信息
     * @param type 查询类型
     * @param data 查指定信息
     * @return 快递信息
     */
    List<Express> findExpress(String type,String data);
    
    /**
     * 查 指定 手机号、状态 快递信息
     *
     * @param userPhone 手机号
     * @param status 状态值
     * @return 快递信息
     */
    List<Express> findByUserPhoneAndStatus(String userPhone,int status);
    
    /**
     * 录入 快递
     * @param e 快递对象
     * @return 是否成功
     */
    boolean insert(Express e) throws CodeException, NumberException;
    
    /**
     * 修改 快递
     * @param id 快递id
     * @param newException 快递对象
     * @return 是否成功
     */
    boolean update(int id,Express newException);
    
    /**
     * 修改 快递  (取件)
     * @param code 取件号
     * @return 是否成功
     */
    boolean updateStatus(String code);
    
    /**
     * 删除 快递
     * @param id 快递id
     * @return 是否成功
     */
    boolean delete(int id);
    
    /**
     * 获取 地区快递数
     * @return
     */
    List departureAllSize();
}
